home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / SAT / SATcollision][ ƒ / sMrEgghead][.p < prev   
Encoding:
Text File  |  1993-09-19  |  1.6 KB  |  72 lines  |  [TEXT/PJMM]

  1. { Player sprite for SATcollision][ }
  2.  
  3. unit sMrEgghead;
  4.  
  5. interface
  6.  
  7.     uses
  8.         SAT;
  9.  
  10.     var
  11.         mrEggheadFaces: array[0..3] of FacePtr;
  12.         yuckFace: FacePtr;
  13.  
  14.     procedure InitMrEgghead;
  15.     procedure SetupMrEgghead (me: SpritePtr);
  16.     procedure HandleMrEgghead (me: SpritePtr);
  17.     procedure HitMrEgghead (me, him: SpritePtr);
  18.  
  19. implementation
  20.  
  21.     procedure InitMrEgghead;
  22.         var
  23.             i: integer;
  24.     begin
  25.         for i := 0 to 3 do
  26.             mrEggheadFaces[i] := GetFace(128 + i);
  27.         yuckFace := GetFace(134);
  28.     end;
  29.  
  30.     procedure SetupMrEgghead (me: SpritePtr);
  31.     begin
  32.         me^.mode := 0;
  33.         me^.speed.h := 1;
  34.         me^.kind := 1; {Friend kind}
  35.         SetRect(me^.hotRect, 0, 0, 32, 32);
  36.     end;
  37.  
  38.     procedure HandleMrEgghead (me: SpritePtr);
  39.     begin
  40.         GetMouse(me^.position);
  41.  
  42. {This time, let's make sure Mr Egghead is always visible!}
  43.         if me^.position.v < 0 then
  44.             me^.position.v := 0;
  45.         if me^.position.h < 0 then
  46.             me^.position.h := 0;
  47.         if me^.position.v > offSizeV - 32 then
  48.             me^.position.v := offSizeV - 32;
  49.         if me^.position.h > offSizeH - 32 then
  50.             me^.position.h := offSizeH - 32;
  51.  
  52.         if me^.mode < 0 then {we have taken a bite in a bad apple recently}
  53.             begin
  54.                 me^.face := yuckFace;
  55.                 me^.mode := me^.mode + 1;
  56.             end
  57.         else if me^.mode = 0 then {nothing special recently}
  58.             me^.face := mrEggheadFaces[2]
  59.         else
  60.             begin {ate an apple recently - chew!}
  61.                 me^.mode := me^.mode - 1;
  62.                 me^.face := mrEggheadFaces[me^.mode mod 4];
  63.             end;
  64.     end;
  65.  
  66.     procedure HitMrEgghead;
  67.     begin
  68. {Hit something! We can take whatever action we need here, but in this case, we let sApple decide.}
  69. {(We could have omitted this function altogether and passed nil.)}
  70.     end;
  71.  
  72. end.